main() {
  Student stu = new Student('张三', 18, '1001');
  stu.sing(); // 我会唱歌
  stu.jump(); // 我会跳
  stu.rap(); // 我会rap
  stu.basketball(); // 我会篮球
  stu.code(); // 我会写代码
  stu.debug(); // 我会调试

  stu.sayHello();
}

// 定义父类
class Person {
  String name;
  int age;

  Person(this.name, this.age);

  // 定义方法
  void sayHello() {
    print('我是$name，我今年$age岁');
  }
}

// 定义子类，extends 继承父类，with 混入多个 mixin 类
class Student extends Person with Skill, Coder {
  String id;

  Student(super.name, super.age, this.id);
}

// 定义混入类
mixin Skill {
  // 唱
  void sing() {
    print('我会唱歌');
  }

  // 跳
  void jump() {
    print('我会跳');
  }

  // rap
  void rap() {
    print('我会rap');
  }

  // 篮球
  void basketball() {
    print('我会篮球');
  }
}

// 定义混入类
mixin Coder {
  // 写代码
  void code() {
    print('我会写代码');
  }

  // 调试
  void debug() {
    print('我会调试');
  }
}
